package com.yidi.common.core.domain;

import java.io.Serializable;
import java.util.Date;
import java.util.Map;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;

import javax.persistence.*;


/**
 * @author ：Xn
 * @ClassName: BaseEntity
 * @date ：2021-10-18 14:15
 * @describe ：Entity基类
 */
@Data
@MappedSuperclass//实体类当成基类实体，它不会隐射到数据库表，但继承它的子类实体在隐射时会自动扫描该基类实体的隐射属性，添加到子类实体的对应数据库表中
public class BaseEntity implements Serializable
{
    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    /** 创建者 */
    @Column(name = "create_by")
    private String createBy;

    /** 创建时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Column(name = "create_time")
    private Date createTime;

    /** 更新者 */
    @Column(name = "update_by")
    private String updateBy;

    /** 更新时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Column(name = "update_time")
    private Date updateTime;

    /**
     * 状态 0：激活 1：冻结
     */
    @Column(name = "remove_status")
    private Integer removeStatus;

    /** 显示顺序 */
    @Column(name = "order_num")
    private Integer orderNum;

    /** 备注 */
    @Column(columnDefinition = "longtext", nullable = true)
    private String remark;

    /** 搜索值 */
    @Transient //不在数据库中做映射
    private String searchValue;

    /** 请求参数 */
    @Transient //不在数据库中做映射
    private Map<String, Object> params;

    @Transient //不在数据库中做映射
    private Integer pageNum;

    @Transient //不在数据库中做映射
    private Integer pageSize;
}
